/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.facilscrum.form.sprint;

import java.text.SimpleDateFormat;
import javax.swing.table.DefaultTableModel;
import org.javscaz.javscaztools.utilidades.Utilidades;
import org.facilscrum.beans.Proyectos;
import org.facilscrum.beans.Sprint;
import org.facilscrum.beans.Userstories;
import org.facilscrum.controller.ProyectosController;
import org.facilscrum.controller.SprintController;
import org.facilscrum.controller.UserstoriesController;
import org.facilscrum.generales.Mensajeria;
import org.facilscrum.sesion.MySesion;

/**
 *
 * @author avbravo
 */
public class SprintActualizarForm extends javax.swing.JInternalFrame {

    Proyectos proyectos = new Proyectos();
    ProyectosController proyectosController = new ProyectosController();
    Sprint sprint = new Sprint();
    SprintController sprintController = new SprintController();
    Userstories userstories = new Userstories();
    UserstoriesController userstoriesController = new UserstoriesController();
    DefaultTableModel modeloSprint;

    /**
     * Creates new form SprintForm
     */
    public SprintActualizarForm() {
        initComponents();
        modeloSprint = (DefaultTableModel) jTableSprint.getModel();
        java.util.Calendar ca = java.util.Calendar.getInstance();
        java.sql.Date mydate = new java.sql.Date(ca.getTimeInMillis());
        jXDatePickerFechaInicio.setDate(mydate);
        jXDatePickerFechaInicio.setFormats(new SimpleDateFormat("dd/MM/yyyy"));
        jXDatePickerFechaTerminacion.setDate(mydate);
        jXDatePickerFechaTerminacion.setFormats(new SimpleDateFormat("dd/MM/yyyy"));
        jXDatePickerFechaDemo.setDate(mydate);
        jXDatePickerFechaDemo.setFormats(new SimpleDateFormat("dd/MM/yyyy"));
        if (!MySesion.getSeleccionoProyectoTrabajo()) {
            Mensajeria.MensajeWarning("Debe indicar el proyecto de trabajo");
        } else {
            proyectos = MySesion.getProyectos();
            jTextFieldProyecto.setText(proyectos.getProyecto());
            cargarTablaSprint();
        }
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTableSprint = new javax.swing.JTable();
        jLabel9 = new javax.swing.JLabel();
        jXDatePickerFechaDemo = new org.jdesktop.swingx.JXDatePicker();
        jLabel6 = new javax.swing.JLabel();
        jFormattedTextFieldHoraDemo = new javax.swing.JFormattedTextField();
        jLabel4 = new javax.swing.JLabel();
        jXDatePickerFechaInicio = new org.jdesktop.swingx.JXDatePicker();
        jLabel5 = new javax.swing.JLabel();
        jXDatePickerFechaTerminacion = new org.jdesktop.swingx.JXDatePicker();
        jLabel3 = new javax.swing.JLabel();
        jFormattedTextFieldVelocidadEstimada = new javax.swing.JFormattedTextField();
        jLabel2 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextAreaObjetivo = new javax.swing.JTextArea();
        jLabel7 = new javax.swing.JLabel();
        jTextFieldNombre = new javax.swing.JTextField();
        jLabel8 = new javax.swing.JLabel();
        jTextFieldIdSprint = new javax.swing.JTextField();
        jButtonGuardar = new javax.swing.JButton();
        jButtonRegresar = new javax.swing.JButton();
        jLabel10 = new javax.swing.JLabel();
        jComboBoxAbierto = new javax.swing.JComboBox();
        jLabel11 = new javax.swing.JLabel();
        jTextFieldPuntosAsignados = new javax.swing.JTextField();
        jButtonEliminar = new javax.swing.JButton();
        jPanel3 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jTextFieldProyecto = new javax.swing.JTextField();

        setClosable(true);
        setTitle("Actualizar Sprint");

        jTableSprint.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "id", "nombre", "velocidad", "Inicio", "Terminacion", "Demo", "Abierto"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Boolean.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jTableSprint.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTableSprintMouseClicked(evt);
            }
        });
        jScrollPane2.setViewportView(jTableSprint);
        jTableSprint.getColumnModel().getColumn(0).setMaxWidth(60);
        jTableSprint.getColumnModel().getColumn(6).setMaxWidth(60);

        jLabel9.setText("Fecha demo");

        jLabel6.setText("Hora demo");

        jFormattedTextFieldHoraDemo.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.DateFormatter(new java.text.SimpleDateFormat("H:mm"))));
        jFormattedTextFieldHoraDemo.setText("03:00");

        jLabel4.setText("Fecha Inicio");

        jLabel5.setText("Fecha Terminacion");

        jLabel3.setText("Velocidad Estimada");

        jFormattedTextFieldVelocidadEstimada.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("####"))));

        jLabel2.setText("Objetivo");

        jTextAreaObjetivo.setColumns(20);
        jTextAreaObjetivo.setRows(5);
        jScrollPane1.setViewportView(jTextAreaObjetivo);

        jLabel7.setText("Nombre");

        jLabel8.setText("id");

        jTextFieldIdSprint.setEnabled(false);
        jTextFieldIdSprint.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTextFieldIdSprintActionPerformed(evt);
            }
        });

        jButtonGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/avbravo/jscrum/gif/save_icon.gif"))); // NOI18N
        jButtonGuardar.setToolTipText("Guardar");
        jButtonGuardar.setEnabled(false);
        jButtonGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonGuardarActionPerformed(evt);
            }
        });

        jButtonRegresar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/avbravo/jscrum/gif/return.gif"))); // NOI18N
        jButtonRegresar.setToolTipText("Regresar");
        jButtonRegresar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonRegresarActionPerformed(evt);
            }
        });

        jLabel10.setText("Abierto");

        jComboBoxAbierto.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "si", "no" }));

        jLabel11.setText("Puntos Asignados");

        jTextFieldPuntosAsignados.setEnabled(false);

        jButtonEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/avbravo/jscrum/gif/delete.gif"))); // NOI18N
        jButtonEliminar.setToolTipText("Guardar");
        jButtonEliminar.setEnabled(false);
        jButtonEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonEliminarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel3)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 741, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(jPanel2Layout.createSequentialGroup()
                                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup()
                                            .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(jLabel7)
                                                .addComponent(jLabel8))
                                            .addGap(38, 38, 38)
                                            .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(jTextFieldNombre, javax.swing.GroupLayout.PREFERRED_SIZE, 313, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                .addComponent(jTextFieldIdSprint, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE))
                                            .addGap(59, 59, 59))
                                        .addGroup(jPanel2Layout.createSequentialGroup()
                                            .addComponent(jLabel2)
                                            .addGap(37, 37, 37)
                                            .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addGroup(jPanel2Layout.createSequentialGroup()
                                                    .addGap(13, 13, 13)
                                                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                        .addGroup(jPanel2Layout.createSequentialGroup()
                                                            .addComponent(jXDatePickerFechaDemo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                            .addComponent(jLabel6)
                                                            .addGap(54, 54, 54))
                                                        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                                                            .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                                .addComponent(jXDatePickerFechaInicio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                                .addGroup(jPanel2Layout.createSequentialGroup()
                                                                    .addGap(26, 26, 26)
                                                                    .addComponent(jFormattedTextFieldVelocidadEstimada, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                            .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                                .addComponent(jLabel11)
                                                                .addComponent(jLabel5)))))
                                                .addGroup(jPanel2Layout.createSequentialGroup()
                                                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 321, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                    .addGap(0, 0, Short.MAX_VALUE))
                                                .addGroup(jPanel2Layout.createSequentialGroup()
                                                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                                        .addComponent(jButtonGuardar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                        .addComponent(jComboBoxAbierto, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                    .addComponent(jButtonEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                                    .addComponent(jButtonRegresar, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                                                    .addGap(181, 181, 181)))))
                                    .addComponent(jLabel9)
                                    .addComponent(jLabel10))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(jXDatePickerFechaTerminacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(jFormattedTextFieldHoraDemo, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(jTextFieldPuntosAsignados, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE)))
                            .addComponent(jLabel4))))
                .addContainerGap(61, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 119, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel8)
                    .addComponent(jTextFieldIdSprint, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTextFieldNombre, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel7))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel2)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(1, 1, 1)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jTextFieldPuntosAsignados, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabel3)
                        .addComponent(jLabel11)
                        .addComponent(jFormattedTextFieldVelocidadEstimada, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(jXDatePickerFechaInicio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel5)
                    .addComponent(jXDatePickerFechaTerminacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel9)
                    .addComponent(jXDatePickerFechaDemo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel6)
                    .addComponent(jFormattedTextFieldHoraDemo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel10)
                    .addComponent(jComboBoxAbierto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(jButtonGuardar, javax.swing.GroupLayout.DEFAULT_SIZE, 41, Short.MAX_VALUE)
                    .addComponent(jButtonRegresar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jButtonEliminar, javax.swing.GroupLayout.DEFAULT_SIZE, 41, Short.MAX_VALUE))
                .addGap(10, 10, 10))
        );

        jTabbedPane1.addTab("Sprints", jPanel2);

        jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());

        jLabel1.setText("Proyecto");

        jTextFieldProyecto.setEnabled(false);

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTextFieldProyecto, javax.swing.GroupLayout.PREFERRED_SIZE, 420, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(303, Short.MAX_VALUE))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(jTextFieldProyecto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 822, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(36, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 489, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(47, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButtonRegresarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonRegresarActionPerformed
        dispose();
    }//GEN-LAST:event_jButtonRegresarActionPerformed

    private void jButtonGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonGuardarActionPerformed
        guardar();
    }//GEN-LAST:event_jButtonGuardarActionPerformed

    private void jTextFieldIdSprintActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldIdSprintActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextFieldIdSprintActionPerformed

    private void jTableSprintMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableSprintMouseClicked
        try {
            Integer fila = jTableSprint.getSelectedRow();
            if (fila == -1) {
                Mensajeria.Mensaje("No se selecciono ninguna fila");
                return;
            }
            jTextFieldIdSprint.setText(jTableSprint.getValueAt(fila, 0).toString());
            sprint.setIdsprint(Integer.parseInt(jTableSprint.getValueAt(fila, 0).toString()));
            sprint = sprintController.findByPrimaryKey(sprint);
            if (sprint == null) {
                Mensajeria.MensajeWarning("No existe un sprint con ese codigo");
                return;
            } else {
                jTextAreaObjetivo.setText(sprint.getObjetivo());
                jTextFieldNombre.setText(sprint.getNombre());
                jFormattedTextFieldVelocidadEstimada.setText(sprint.getVelocidadestimada().toString());
                jFormattedTextFieldHoraDemo.setText(sprint.getHorademo().toString());
                jXDatePickerFechaInicio.setDate(sprint.getFechainicio());
                jXDatePickerFechaInicio.setFormats(new SimpleDateFormat("dd/MM/yyyy"));
                jXDatePickerFechaTerminacion.setDate(sprint.getFechaterminacion());
                jXDatePickerFechaTerminacion.setFormats(new SimpleDateFormat("dd/MM/yyyy"));
                jXDatePickerFechaDemo.setDate(sprint.getFechademo());
                jXDatePickerFechaDemo.setFormats(new SimpleDateFormat("dd/MM/yyyy"));
                jComboBoxAbierto.setSelectedItem(sprint.getAbierto());
                jTextFieldPuntosAsignados.setText(sprint.getPuntosasignados().toString());
                jButtonGuardar.setEnabled(true);
                jButtonEliminar.setEnabled(true);
            }

        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "MouseClicked()");
        }
    }//GEN-LAST:event_jTableSprintMouseClicked

    private void jButtonEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonEliminarActionPerformed
        try {
            if (Mensajeria.PreguntaSiNo("Desea eliminar el sprint", "Eliminar").equals("si")) {
                if (sprintController.delete(sprint)) {
                    Mensajeria.Mensaje("Se elimino el sprint");
                    limpiar();
                    cargarTablaSprint();
                }
            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "boton Eliminar()");
        }
    }//GEN-LAST:event_jButtonEliminarActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonEliminar;
    private javax.swing.JButton jButtonGuardar;
    private javax.swing.JButton jButtonRegresar;
    private javax.swing.JComboBox jComboBoxAbierto;
    private javax.swing.JFormattedTextField jFormattedTextFieldHoraDemo;
    private javax.swing.JFormattedTextField jFormattedTextFieldVelocidadEstimada;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTable jTableSprint;
    private javax.swing.JTextArea jTextAreaObjetivo;
    private javax.swing.JTextField jTextFieldIdSprint;
    private javax.swing.JTextField jTextFieldNombre;
    private javax.swing.JTextField jTextFieldProyecto;
    private javax.swing.JTextField jTextFieldPuntosAsignados;
    private org.jdesktop.swingx.JXDatePicker jXDatePickerFechaDemo;
    private org.jdesktop.swingx.JXDatePicker jXDatePickerFechaInicio;
    private org.jdesktop.swingx.JXDatePicker jXDatePickerFechaTerminacion;
    // End of variables declaration//GEN-END:variables

    private void cargarTablaSprint() {
        try {
            modeloSprint = Utilidades.limpiarModelo(modeloSprint);
            String where = "idproyecto='" + proyectos.getIdproyecto() + "' order by idsprint desc";

            if (sprintController.query(where)) {
                for (Sprint s : sprintController.getSprintlist()) {
                    Object[] filas = new Object[7]; // Hay tres columnas en la tabla       
                    filas[0] = s.getIdsprint();
                    filas[1] = s.getNombre();
                    filas[2] = s.getVelocidadestimada();
                    filas[3] = Utilidades.formatearFecha(s.getFechainicio());
                    filas[4] = Utilidades.formatearFecha(s.getFechaterminacion());
                    filas[5] = Utilidades.formatearFecha(s.getFechademo());
                    if(s.getAbierto().equals("si")){
                        filas[6] = true;
                    }else{
                        filas[6] = false;
                    }
                    
                    modeloSprint.addRow(filas);
                }
            }
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "cargarTablaSprint()");
        }
    }

    private void guardar() {
        try {
            if (jTextFieldNombre.getText() == null || jTextFieldNombre.getText().equals("")) {
                Mensajeria.MensajeWarning("Ingrese el nombre del sprint");
                return;
            }
            if (jFormattedTextFieldVelocidadEstimada.getText() == null || jFormattedTextFieldVelocidadEstimada.getText().equals("")) {
                Mensajeria.MensajeWarning("Indique la velocidad estimada");
                return;
            }
            Integer velocidadEstimada = Integer.parseInt(jFormattedTextFieldVelocidadEstimada.getText());
            if (velocidadEstimada <= 0) {
                Mensajeria.MensajeWarning("La velocidad estimada no debe ser negativa o cero");
                return;
            }
            if (jTextAreaObjetivo.getText() == null || jTextAreaObjetivo.getText().equals("")) {
                Mensajeria.MensajeWarning("Ingrese el objetivo del sprint");
                return;
            }
            java.util.Date Fecha = jXDatePickerFechaInicio.getDate();
            java.sql.Date fechaInicio = new java.sql.Date(Fecha.getTime());
            if (fechaInicio == null) {
                Mensajeria.MensajeWarning("Seleccione la fecha inicio");
                jXDatePickerFechaInicio.requestFocus();
                return;
            }
            Fecha = jXDatePickerFechaTerminacion.getDate();
            java.sql.Date fechaTerminacion = new java.sql.Date(Fecha.getTime());
            if (fechaTerminacion == null) {
                Mensajeria.MensajeWarning("Seleccione la fecha terminacion");
                jXDatePickerFechaTerminacion.requestFocus();
                return;
            }
            Fecha = jXDatePickerFechaDemo.getDate();
            java.sql.Date fechaDemo = new java.sql.Date(Fecha.getTime());
            if (fechaDemo == null) {
                Mensajeria.MensajeWarning("Seleccione la fecha demo");
                jXDatePickerFechaDemo.requestFocus();
                return;
            }
            String horaDemo = jFormattedTextFieldHoraDemo.getText();
            if (horaDemo == null || horaDemo.equals("")) {
                Mensajeria.MensajeWarning("Indique la hora del demo");
                return;
            }
            sprint.setFechainicio(fechaInicio);
            sprint.setFechaterminacion(fechaTerminacion);
            sprint.setFechademo(fechaDemo);
            sprint.setHorademo(horaDemo);
            String fechaI = Utilidades.formatearFecha(proyectos.getFecha());
            String fechaT = Utilidades.formatearFecha(proyectos.getFechaterminacion());


            if (sprint.getFechainicio().before(proyectos.getFecha()) || sprint.getFechainicio().after(proyectos.getFechaterminacion())) {

                Mensajeria.MensajeWarning("La fecha de inicio " + Utilidades.formatearFecha(sprint.getFechainicio()) + " no esta  comprendida entre\n las fechas del proyecto " + proyectos.getProyecto() + "\n " + fechaI + "  y  " + fechaT);
                return;
            }
            if (sprint.getFechaterminacion().before(proyectos.getFecha()) || sprint.getFechaterminacion().after(proyectos.getFechaterminacion())) {
                Mensajeria.MensajeWarning("La fecha de terminacion " + Utilidades.formatearFecha(sprint.getFechaterminacion()) + " no esta  comprendida entre\n las fechas del proyecto " + proyectos.getProyecto() + "\n " + fechaI + "  y  " + fechaT);
                return;
            }
            if (sprint.getFechademo().before(proyectos.getFecha()) || sprint.getFechademo().after(proyectos.getFechaterminacion())) {
                Mensajeria.MensajeWarning("La fecha de demo " + Utilidades.formatearFecha(sprint.getFechademo()) + " no esta  comprendida entre\n las fechas del proyecto " + proyectos.getProyecto() + "\n " + fechaI + "  y  " + fechaT);
                return;
            }
            if (sprint.getFechademo().after(sprint.getFechaterminacion())) {
                Mensajeria.MensajeWarning("La fecha de demo " + Utilidades.formatearFecha(sprint.getFechademo()) + " debe no debe ser mayor que al fecha de terminacion del sprint");
                return;
            }
            sprint.setNombre(jTextFieldNombre.getText());
            sprint.setVelocidadestimada(velocidadEstimada);
            sprint.setObjetivo(jTextAreaObjetivo.getText());
//            if (!validarFechaSprint()) {
//                return;                
//            }
            int k = jComboBoxAbierto.getSelectedIndex();
            if (k != -1) {
                sprint.setAbierto(jComboBoxAbierto.getSelectedItem().toString());
            } else {
                Mensajeria.Mensaje("No se ha seleccionado si esta abierto o no");
                return;
            }
            if (sprintController.update(sprint)) {

                Mensajeria.Mensaje("Se actualizo el registro del sprint ");
                limpiar();
                jButtonGuardar.setEnabled(false);
                jButtonEliminar.setEnabled(false);
            } else {
                Mensajeria.MensajeWarning("No se pudo actualizar " + sprintController.getMensaje());
            }
            cargarTablaSprint();
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "guardar()");
        }

    }

    private void limpiar() {
        jTextFieldIdSprint.setText("");
        jTextAreaObjetivo.setText("");
        jTextFieldNombre.setText("");
        jFormattedTextFieldVelocidadEstimada.setText("0");
        jFormattedTextFieldHoraDemo.setText("03:00");
        jButtonGuardar.setEnabled(false);
        jButtonEliminar.setEnabled(false);

    }

    private Boolean validarFechaSprint() {
        try {
            String where = "idproyecto='" + proyectos.getIdproyecto() + "' and idsprint!='" + sprint.getIdsprint() + "'";
            if (sprintController.query(where)) {
                for (Sprint s : sprintController.getSprintlist()) {
                    String fechaI = Utilidades.formatearFecha(s.getFechainicio());
                    String fechaT = Utilidades.formatearFecha(s.getFechaterminacion());

                    if (Utilidades.isFechaIgual(sprint.getFechainicio(), s.getFechainicio()) || sprint.getFechainicio().after(s.getFechainicio())) {

                        Mensajeria.MensajeWarning("La fecha de inicio " + Utilidades.formatearFecha(sprint.getFechainicio()) + " no se puede utilizar \n El sprint " + s.getNombre() + " \nesta en esas fechas:  " + "  " + fechaI + "  --  " + fechaT);
                        return false;
                    }
                    if (Utilidades.isFechaIgual(sprint.getFechaterminacion(), s.getFechainicio()) || sprint.getFechaterminacion().after(s.getFechainicio())) {
                        Mensajeria.MensajeWarning("La fecha de terminacion " + Utilidades.formatearFecha(sprint.getFechaterminacion()) + " no se puede utilizar \n El sprint " + s.getNombre() + "\n esta en esas fechas:  " + "  " + fechaI + "  --  " + fechaT);
                        return false;
                    }
                    if (Utilidades.isFechaIgual(sprint.getFechademo(), s.getFechainicio()) || sprint.getFechademo().after(s.getFechainicio())) {
                        Mensajeria.MensajeWarning("La fecha de demo " + Utilidades.formatearFecha(sprint.getFechademo()) + " no se puede utilizar \n El sprint " + s.getNombre() + "\n esta en esas fechas: " + "  " + fechaI + "  --  " + fechaT);
                        return false;
                    }
                }
            }
            return true;
        } catch (Exception ex) {
            Mensajeria.MensajeError(ex, "validarFechaSprint()");
        }
        return false;
    }
}
